// // //内嵌块级作用域
// // let count = 10;
// // {
// //     let i;
// //     for(i = 0; i < count; i++){
// //         console.log(i)
// //     }
// // }
// // // console.log(i);// ReferenceError: i is not defined
// // // 0
// // // 1
// // // 2
// // // 3
// // // 4
// // // 5
// // // 6
// // // 7
// // // 8
// // // 9
// //
// // //循环块级作用域
// // for(let i = 0; i <= 10; i++){
// //     console.log(i)
// // }
// // // console.log(i);//ReferenceError: i is not defined
// // // 0
// // // 1
// // // 2
// // // 3
// // // 4
// // // 5
// // // 6
// // // 7
// // // 8
// // // 9
// // // 10
//
// //1.使用 var 关键字声明了循环迭代变量 i，但这个变量并不会被限制在 for 循环的块级作用域内。
// //2.迭代变量的值是循环结束时的最终值，即为10。而且，这个变量 i 存在于循环体外部，随时可以访问。
// for(var i = 0; i< 3;i++){
//     setTimeout(()=>{
//         console.log(i)
//     },1000)
// }
// console.log('loop-out:',i);
// // loop-out: 3
// // 3
// // 3
// // 3
//
// //1.ES6以前采用IIFE锁区来执行一个函数表达式，进而来实现锁区。
// for(var k = 0; k< 3;k++){
//     (function(k){
//         setTimeout(()=>{
//             console.log(k)
//         },1000)
//     })(k)
// }
// console.log('loop-out:',k);
// // loop-out: 3
// // 0
// // 1
// // 2
//
// //1.采用ES6的块级作用域
// for(let m = 0; m <=3; m++){
//     setTimeout(()=>{
//         console.log(m)
//     },1000)
// }
// // console.log(m);
// // 0
// // 1
// // 2
// // 3

let i;
for(i=0;i<=3;i++){
    setTimeout(()=>{
        console.log(i);
    },1000)
}
// 4
// 4
// 4
// 4